home *** CD-ROM | disk | FTP | other *** search
/ CD World 1998 January / CD World - Ocak 1998.iso / misc / dbase55 / disk7 / samples1.pak / COUNTRY.WFM < prev    next >
Text File  |  1995-07-18  |  16KB  |  520 lines

  1. ************************************************************************************
  2. *  PROGRAM:      Country.wfm
  3. *
  4. *  WRITTEN BY:   Borland Samples Group
  5. *
  6. *  DATE:         2/95
  7. *
  8. *  UPDATED:      7.95
  9. *
  10. *  REVISION:     $Revision:   1.8  $
  11. *
  12. *  VERSION:      Visual dBASE
  13. *
  14. *  DESCRIPTION:  This is a program that shows information about various
  15. *                european countries as you click on the appropriate country
  16. *                on the image of the map of Europe.  The program shows
  17. *                the ability to use "hot" maps in Visual dBASE, and
  18. *                also illustrates the various uses and types of arrays
  19. *                you can create in your programs.
  20. *
  21. *  PARAMETERS:   None
  22. *
  23. *  CALLS:        Buttons.cc  (Custom Controls file)
  24. *
  25. *  USAGE:        Do Country.wfm
  26. *******************************************************************************
  27. #define MAX_COUNTRIES  7
  28.  
  29. #define GERMANY_RECTS  32
  30. #define FRANCE_RECTS   24
  31. #define ITALY_RECTS    30
  32. #define SPAIN_RECTS    18
  33. #define UK_RECTS       14
  34. #define PORTUGAL_RECTS 7
  35. #define IRELAND_RECTS  7
  36.  
  37. create session
  38. set talk off
  39. ** END HEADER -- do not remove this line*
  40. * Generated on 07/11/95
  41. *
  42. parameter bModal
  43. local f
  44. f = new COUNTRYFORM()
  45. if (bModal)
  46.    f.mdi = .F. && ensure not MDI
  47.    f.ReadModal()
  48. else
  49.    f.Open()
  50. endif
  51. CLASS COUNTRYFORM OF FORM
  52.    Set Procedure To &_dbwinhome.samples\BUTTONS.CC additive
  53.    this.OnOpen = CLASS::FORM_ONOPEN
  54.    this.Width = 67.166
  55.    this.OnClose = CLASS::FORM_ONCLOSE
  56.    this.View = "country.dbf"
  57.    this.Text = "Country Information"
  58.    this.Top = 2
  59.    this.Left = 6.833
  60.    this.ColorNormal = "N/GB"
  61.    this.Height = 16
  62.  
  63.    DEFINE RECTANGLE ALLINFORECT OF THIS;
  64.        PROPERTY;
  65.          Width 65.165,;
  66.          Text "",;
  67.          Top 0.1973,;
  68.          Left 1,;
  69.          ColorNormal "gb/gb",;
  70.          Height 13.5
  71.  
  72.    DEFINE RECTANGLE IMAGERECT OF THIS;
  73.        PROPERTY;
  74.          Width 44.6348,;
  75.          Text "Rectangle2",;
  76.          Top 0.7051,;
  77.          Left 2.1973,;
  78.          ColorNormal "w/w",;
  79.          PatternStyle 5,;
  80.          BorderStyle 1,;
  81.          Height 12.5293
  82.  
  83.    DEFINE IMAGE MAPIMAGE OF THIS;
  84.        PROPERTY;
  85.          DataSource "BINARY COUNTRY->MAP",;
  86.          Width 42.665,;
  87.          Alignment 1,;
  88.          OnLeftMouseDown CLASS::MAPIMAGE_ONLEFTMOUSEDOWN,;
  89.          Top 1,;
  90.          Left 3,;
  91.          Height 11.8994
  92.  
  93.    DEFINE TEXT CAPITALTEXT OF THIS;
  94.        PROPERTY;
  95.          FontName "Arial",;
  96.          Width 15.002,;
  97.          Text "Capital:",;
  98.          Top 3.5625,;
  99.          Left 48.6641,;
  100.          ColorNormal "b/gb",;
  101.          FontSize 9,;
  102.          Height 0.8486
  103.  
  104.    DEFINE ENTRYFIELD CAPITALENTRY OF THIS;
  105.        PROPERTY;
  106.          FontName "Arial",;
  107.          Function "B",;
  108.          Width 15,;
  109.          FontItalic .T.,;
  110.          Top 4.3975,;
  111.          ColorNormal "gr+/gb",;
  112.          Enabled .F.,;
  113.          DataLink "COUNTRY->CAPITAL",;
  114.          Left 50.5,;
  115.          Border .F.,;
  116.          FontSize 10,;
  117.          Height 0.8516
  118.  
  119.    DEFINE TEXT SIZETEXT OF THIS;
  120.        PROPERTY;
  121.          FontName "Arial",;
  122.          Width 15.002,;
  123.          Text "Population:",;
  124.          Top 5.5625,;
  125.          Left 48.6641,;
  126.          ColorNormal "b/gb",;
  127.          FontSize 9,;
  128.          Height 0.8486
  129.  
  130.    DEFINE ENTRYFIELD POPULATIONENTRY OF THIS;
  131.        PROPERTY;
  132.          FontName "Arial",;
  133.          Function "B",;
  134.          Width 11.5,;
  135.          FontItalic .T.,;
  136.          Picture "99.99",;
  137.          Top 6.5,;
  138.          Enabled .F.,;
  139.          DataLink "COUNTRY->POPULATION",;
  140.          Left 50.5,;
  141.          ColorNormal "RG+/gb",;
  142.          Border .F.,;
  143.          FontSize 9,;
  144.          Height 0.9111
  145.  
  146.    DEFINE TEXT POPULATIONTEXT OF THIS;
  147.        PROPERTY;
  148.          FontName "Arial",;
  149.          Width 15.002,;
  150.          Text "Size:",;
  151.          Top 7.5625,;
  152.          Left 48.6641,;
  153.          ColorNormal "b/gb",;
  154.          FontSize 9,;
  155.          Height 0.8486
  156.  
  157.    DEFINE ENTRYFIELD SIZEENTRY OF THIS;
  158.        PROPERTY;
  159.          FontName "Arial",;
  160.          Function "B",;
  161.          Width 11.5,;
  162.          FontItalic .T.,;
  163.          Picture "999,999,999",;
  164.          Top 8.5,;
  165.          Enabled .F.,;
  166.          DataLink "COUNTRY->size",;
  167.          Left 50.5,;
  168.          ColorNormal "RG+/gb",;
  169.          Border .F.,;
  170.          FontSize 9,;
  171.          Height 0.9111
  172.  
  173.    DEFINE TEXT GNPTEXT OF THIS;
  174.        PROPERTY;
  175.          FontName "Arial",;
  176.          Width 15.002,;
  177.          Text "GNP:",;
  178.          Top 9.5625,;
  179.          Left 48.6641,;
  180.          ColorNormal "b/gb",;
  181.          FontSize 9,;
  182.          Height 0.8486
  183.  
  184.    DEFINE ENTRYFIELD GNPENTRY OF THIS;
  185.        PROPERTY;
  186.          FontName "Arial",;
  187.          Width 11.5,;
  188.          FontItalic .T.,;
  189.          Picture "999,999.99",;
  190.          Function "$B",;
  191.          Top 10.5,;
  192.          Enabled .F.,;
  193.          DataLink "COUNTRY->gnp",;
  194.          Left 50.5,;
  195.          ColorNormal "gr+/gb",;
  196.          Border .F.,;
  197.          FontSize 9,;
  198.          Height 0.9111
  199.  
  200.    DEFINE CLOSEBUTTON CLOSEBUTTON1 OF THIS;
  201.        PROPERTY;
  202.          ColorNormal "b/gb",;
  203.          Width 14.165,;
  204.          Group .T.,;
  205.          StatusMessage "Click on a country on the map to see information about it.",;
  206.          Top 14.0996,;
  207.          Left 26.5,;
  208.          Height 1.5469
  209.  
  210.    DEFINE SAMPLEINFOBUTTON COUNTRYINFOBUTTON OF THIS;
  211.        PROPERTY;
  212.          Width 3.5,;
  213.          Group .T.,;
  214.          Top 0.3975,;
  215.          Left 62.5,;
  216.          Height 1.1641
  217.  
  218.    DEFINE TEXT POPMILLIONTEXT OF THIS;
  219.        PROPERTY;
  220.          FontName "Arial",;
  221.          Width 5,;
  222.          Alignment 5,;
  223.          Text "M",;
  224.          Top 6.5,;
  225.          Left 60,;
  226.          ColorNormal "gr+/gb",;
  227.          FontSize 9,;
  228.          Height 0.9111
  229.  
  230.    DEFINE TEXT GNPBILLIONTEXT OF THIS;
  231.        PROPERTY;
  232.          FontName "Arial",;
  233.          Width 5,;
  234.          Alignment 5,;
  235.          Text "B",;
  236.          Top 10.5,;
  237.          Left 60,;
  238.          ColorNormal "gr+/gb",;
  239.          FontSize 9,;
  240.          Height 0.9111
  241.  
  242.    DEFINE TEXT TEXT1 OF THIS;
  243.        PROPERTY;
  244.          FontName "Arial",;
  245.          Width 5,;
  246.          Alignment 5,;
  247.          Text "Sq K",;
  248.          Top 8.5,;
  249.          Left 60,;
  250.          ColorNormal "gr+/gb",;
  251.          FontSize 9,;
  252.          Height 0.9111
  253.  
  254.    Procedure Form_OnOpen
  255.    ****************************************************************************
  256.  
  257.    * Create rectangle arrys for different countries
  258.    form.GermanyAr = new array(GERMANY_RECTS)
  259.    form.FranceAr = new array(FRANCE_RECTS)
  260.    form.SpainAr = new array(SPAIN_RECTS)
  261.    form.ItalyAr = new array(ITALY_RECTS)
  262.    form.UKAr = new array(UK_RECTS)
  263.    form.PortugalAr = new array(PORTUGAL_RECTS)
  264.    form.IrelandAr = new array(IRELAND_RECTS)
  265.  
  266.    form.CountryAr = new array(MAX_COUNTRIES)
  267.    form.CountryAr[1] = {GERMANY_RECTS, form.GermanyAr}
  268.    form.CountryAr[2] = {FRANCE_RECTS, form.FranceAr}
  269.    form.CountryAr[3] = {ITALY_RECTS, form.ItalyAr}
  270.    form.CountryAr[4] = {SPAIN_RECTS, form.SpainAr}
  271.    form.CountryAr[5] = {UK_RECTS, form.UKAr}
  272.    form.CountryAr[6] = {PORTUGAL_RECTS, form.PortugalAr}
  273.    form.CountryAr[7] = {IRELAND_RECTS, form.IrelandAr}
  274.  
  275.  
  276.    CLASS::FillCoordArrays()
  277.    form.countryInfoButton.sampleName = "Country.wfm"
  278.  
  279.  
  280.    ****************************************************************************
  281.  
  282.    Procedure Form_OnClose
  283.    ****************************************************************************
  284.  
  285.    close procedure &_dbwinhome.samples\Buttons.cc
  286.  
  287.  
  288.    ****************************************************************************
  289.  
  290.    Procedure MAPIMAGE_OnLeftMouseDown(flags, col, row)
  291.  
  292.    * Highlight the country that was clicked on.
  293.    ****************************************************************************
  294.    local i, in, checkFunction
  295.  
  296.    i = 1
  297.    in = .F.
  298.    do while .not. in .and. i <= MAX_COUNTRIES
  299.       in = CLASS::CheckCountry(col, row, form.countryAr[i][1], ;
  300.                                        form.countryAr[i][2], i)
  301.       i = i + 1
  302.    enddo
  303.  
  304.  
  305.    ****************************************************************************
  306.  
  307.    Function CheckCountry(col, row, max, rectAr, recNo)
  308.  
  309.    * Check if point clicked is in the parameter country array (rectAr)
  310.    ****************************************************************************
  311.    private pointIn, i
  312.  
  313.    i = 1
  314.    pointIn = .F.
  315.  
  316.    do while .not. pointIn .and. i <= max
  317.       if (col >= rectAr[i][1] .and. col <= rectAr[i][3]);
  318.          .and. (row >= rectAr[i][2] .and. row <= rectAr[i][4])
  319.          pointIn = .T.
  320.          go recNo
  321.       endif
  322.       i = i + 1
  323.    enddo
  324.  
  325.    return pointIn
  326.  
  327.  
  328.    ****************************************************************************
  329.  
  330.    Procedure FillCoordArrays
  331.  
  332.    * Assign coordinates to arrays for various countries.
  333.    ****************************************************************************
  334.  
  335.    form.GermanyAr[1] = {23.67, 3.06, 26.17, 3.31}
  336.    form.GermanyAr[2] = {23.50, 3.31, 26.00, 3.44}
  337.    form.GermanyAr[3] = {26.17, 3.25, 29.67, 4.31}
  338.    form.GermanyAr[4] = {27.50, 4.38, 29.50, 4.56}
  339.    form.GermanyAr[5] = {29.67, 4.25, 30.50, 4.38}
  340.    form.GermanyAr[6] = {28.83, 3.13, 30.17, 4.06}
  341.    form.GermanyAr[7] = {22.17, 3.44, 23.33, 3.56}
  342.    form.GermanyAr[8] = {21.67, 3.69, 23.50, 3.75}
  343.    form.GermanyAr[9] = {21.83, 3.50, 23.67, 3.63}
  344.    form.GermanyAr[10] = {21.17, 3.69, 23.83, 3.81}
  345.    form.GermanyAr[11] = {21.67, 3.94, 23.67, 4.13}
  346.    form.GermanyAr[12] = {20.17, 4.00, 20.83, 4.19}
  347.    form.GermanyAr[13] = {20.50, 4.31, 23.17, 4.50}
  348.    form.GermanyAr[14] = {20.83, 4.50, 30.00, 4.31}
  349.    form.GermanyAr[15] = {30.17, 4.25, 30.83, 4.25}
  350.    form.GermanyAr[16] = {21.00, 4.88, 29.33, 4.38}
  351.    form.GermanyAr[17] = {21.00, 5.06, 27.67, 4.69}
  352.    form.GermanyAr[18] = {21.00, 5.13, 27.33, 4.88}
  353.    form.GermanyAr[19] = {23.00, 5.31, 27.33, 5.44}
  354.    form.GermanyAr[20] = {27.33, 5.13, 28.50, 5.56}
  355.    form.GermanyAr[21] = {28.17, 5.25, 29.50, 5.50}
  356.    form.GermanyAr[22] = {22.83, 5.50, 28.67, 5.63}
  357.    form.GermanyAr[23] = {22.33, 5.75, 28.00, 5.88}
  358.    form.GermanyAr[24] = {20.67, 4.56, 29.50, 4.50}
  359.    form.GermanyAr[25] = {23.17, 4.25, 27.33, 5.00}
  360.    form.GermanyAr[26] = {21.00, 5.13, 27.67, 5.13}
  361.    form.GermanyAr[27] = {23.00, 5.06, 28.17, 5.88}
  362.    form.GermanyAr[28] = {20.33, 4.25, 23.17, 5.19}
  363.    form.GermanyAr[29] = {22.50, 4.00, 25.67, 5.06}
  364.    form.GermanyAr[30] = {24.83, 3.50, 29.83, 4.38}
  365.    form.GermanyAr[31] = {26.17, 3.13, 30.17, 4.31}
  366.    form.GermanyAr[32] = {22.17, 3.56, 30.00, 4.13}
  367.  
  368.  
  369.    form.FranceAr[1] = {11.67, 5.24, 21.50, 7.24}
  370.    form.FranceAr[2] = {13.67, 4.76, 19.00, 4.76}
  371.    form.FranceAr[3] = {14.67, 4.65, 19.83, 4.76}
  372.    form.FranceAr[4] = {11.17, 4.76, 13.00, 4.88}
  373.    form.FranceAr[5] = {11.33, 5.06, 14.33, 5.06}
  374.    form.FranceAr[6] = {8.17, 5.35, 10.50, 5.65}
  375.    form.FranceAr[7] = {8.33, 5.53, 12.00, 5.71}
  376.    form.FranceAr[8] = {11.00, 5.71, 21.50, 5.71}
  377.    form.FranceAr[9] = {18.17, 4.59, 21.83, 5.59}
  378.    form.FranceAr[10] = {20.67, 5.00, 22.33, 5.24}
  379.    form.FranceAr[11] = {22.33, 5.06, 22.67, 5.18}
  380.    form.FranceAr[12] = {12.33, 6.24, 20.50, 6.29}
  381.    form.FranceAr[13] = {20.33, 5.76, 20.67, 5.94}
  382.    form.FranceAr[14] = {12.50, 6.82, 21.33, 6.47}
  383.    form.FranceAr[15] = {12.17, 7.18, 21.83, 7.18}
  384.    form.FranceAr[16] = {11.50, 7.41, 17.00, 7.82}
  385.    form.FranceAr[17] = {15.50, 7.00, 20.00, 7.24}
  386.    form.FranceAr[18] = {23.33, 7.59, 24.33, 8.24}
  387.    form.FranceAr[19] = {15.50, 4.29, 18.17, 4.47}
  388.    form.FranceAr[20] = {23.33, 8.13, 24.33, 8.63}
  389.    form.FranceAr[21] = {12.83, 6.88, 21.50, 7.63}
  390.    form.FranceAr[22] = {15.67, 4.44, 17.33, 4.94}
  391.    form.FranceAr[23] = {17.50, 4.75, 18.67, 5.19}
  392.    form.FranceAr[24] = {14.00, 5.06, 20.83, 6.38}
  393.  
  394.  
  395.  
  396.  
  397.    form.ItalyAr[1] = {21.33, 6.35, 29.33, 6.65}
  398.    form.ItalyAr[2] = {25.33, 6.00, 28.67, 6.24}
  399.    form.ItalyAr[3] = {21.50, 6.29, 29.33, 6.24}
  400.    form.ItalyAr[4] = {21.17, 6.65, 23.50, 7.06}
  401.    form.ItalyAr[5] = {23.50, 6.94, 27.67, 6.94}
  402.    form.ItalyAr[6] = {25.50, 7.29, 28.67, 7.35}
  403.    form.ItalyAr[7] = {25.67, 7.41, 29.67, 7.71}
  404.    form.ItalyAr[8] = {26.00, 7.71, 29.50, 7.71}
  405.    form.ItalyAr[9] = {27.67, 8.12, 31.00, 8.12}
  406.    form.ItalyAr[10] = {28.83, 8.35, 32.67, 8.29}
  407.    form.ItalyAr[11] = {30.33, 8.53, 34.33, 8.59}
  408.    form.ItalyAr[12] = {31.50, 8.94, 33.17, 9.18}
  409.    form.ItalyAr[13] = {31.67, 9.65, 32.33, 9.59}
  410.    form.ItalyAr[14] = {32.67, 8.47, 35.00, 8.88}
  411.    form.ItalyAr[15] = {27.83, 9.76, 31.33, 10.18}
  412.    form.ItalyAr[16] = {23.33, 8.24, 24.83, 9.24}
  413.    form.ItalyAr[17] = {21.67, 6.88, 25.17, 7.12}
  414.    form.ItalyAr[18] = {23.50, 6.65, 28.00, 7.06}
  415.    form.ItalyAr[19] = {24.50, 7.00, 29.17, 7.47}
  416.    form.ItalyAr[20] = {26.17, 7.71, 30.17, 7.94}
  417.    form.ItalyAr[21] = {27.83, 8.06, 31.67, 8.12}
  418.    form.ItalyAr[22] = {28.67, 8.29, 33.33, 8.41}
  419.    form.ItalyAr[23] = {31.50, 9.35, 32.67, 9.65}
  420.    form.ItalyAr[24] = {23.00, 8.81, 24.33, 9.81}
  421.    form.ItalyAr[25] = {28.17, 10.19, 31.33, 10.63}
  422.    form.ItalyAr[26] = {25.83, 7.94, 30.00, 8.31}
  423.    form.ItalyAr[27] = {27.50, 8.44, 30.83, 8.50}
  424.    form.ItalyAr[28] = {29.67, 8.88, 33.17, 9.06}
  425.    form.ItalyAr[29] = {31.67, 9.31, 32.33, 10.19}
  426.    form.ItalyAr[30] = {32.67, 8.94, 34.33, 9.19}
  427.  
  428.    form.SpainAr[1] = {3.00, 7.59, 12.50, 7.59}
  429.    form.SpainAr[2] = {2.67, 7.41, 17.00, 8.18}
  430.    form.SpainAr[3] = {4.67, 7.94, 6.50, 8.06}
  431.    form.SpainAr[4] = {5.50, 8.06, 13.67, 9.35}
  432.    form.SpainAr[5] = {5.17, 9.00, 12.67, 10.06}
  433.    form.SpainAr[6] = {15.17, 9.35, 15.67, 9.29}
  434.    form.SpainAr[7] = {16.67, 9.00, 17.33, 9.18}
  435.    form.SpainAr[8] = {17.50, 8.82, 18.17, 8.94}
  436.    form.SpainAr[9] = {12.33, 7.06, 17.17, 17.53}
  437.    form.SpainAr[10] = {17.50, 7.06, 21.50, 7.16}
  438.    form.SpainAr[11] = {20.00, 7.24, 22.00, 7.29}
  439.    form.SpainAr[12] = {13.83, 4.70, 18.17, 4.76}
  440.    form.SpainAr[13] = {11.33, 4.94, 19.67, 5.12}
  441.    form.SpainAr[14] = {6.00, 9.25, 12.67, 10.38}
  442.    form.SpainAr[15] = {5.33, 10.13, 10.83, 10.69}
  443.    form.SpainAr[16] = {6.00, 10.63, 7.83, 11.06}
  444.    form.SpainAr[17] = {8.50, 10.75, 11.17, 10.81}
  445.    form.SpainAr[18] = {3.17, 8.00, 7.67, 8.50}
  446.  
  447.    form.UKAr[1] = {8.17, 1.13, 7.67, 4.88}
  448.    form.UKAr[2] = {7.83, 1.19, 12.67, 4.50}
  449.    form.UKAr[3] = {12.00, 2.88, 14.50, 4.38}
  450.    form.UKAr[4] = {13.33, 3.06, 14.50, 4.06}
  451.    form.UKAr[5] = {14.00, 3.75, 15.00, 4.06}
  452.    form.UKAr[6] = {5.67, 1.19, 6.17, 1.31}
  453.    form.UKAr[7] = {6.00, 1.50, 6.83, 1.81}
  454.    form.UKAr[8] = {6.17, 1.81, 7.83, 2.13}
  455.    form.UKAr[9] = {7.00, 1.25, 9.67, 4.63}
  456.    form.UKAr[10] = {7.67, 1.38, 11.33, 4.50}
  457.    form.UKAr[11] = {11.83, 0.13, 12.33, 0.38}
  458.    form.UKAr[12] = {5.00, 2.50, 7.00, 3.00}
  459.    form.UKAr[13] = {4.17, 2.88, 5.17, 3.00}
  460.    form.UKAr[14] = {6.17, 2.94, 7.00, 3.00}
  461.  
  462.  
  463.    form.PortugalAr[1] = {3.50, 8.06, 5.67, 9.94}
  464.    form.PortugalAr[2] = {2.67, 8.94, 3.17, 9.35}
  465.    form.PortugalAr[3] = {3.67, 8.69, 4.67, 10.56}
  466.    form.PortugalAr[4] = {5.17, 8.63, 5.67, 9.50}
  467.    form.PortugalAr[5] = {5.00, 8.63, 6.17, 8.88}
  468.    form.PortugalAr[6] = {2.83, 9.31, 3.50, 9.94}
  469.    form.PortugalAr[7] = {3.50, 9.94, 4.67, 10.69}
  470.  
  471.    form.IrelandAr[1] = {2.50, 3.00, 6.00, 3.94}
  472.    form.IrelandAr[2] = {2.17, 3.38, 3.67, 3.56}
  473.    form.IrelandAr[3] = {2.83, 3.69, 4.17, 3.69}
  474.    form.IrelandAr[4] = {1.83, 3.88, 3.33, 4.19}
  475.    form.IrelandAr[5] = {3.33, 3.81, 5.83, 4.06}
  476.    form.IrelandAr[6] = {3.83, 2.63, 4.50, 2.75}
  477.    form.IrelandAr[7] = {3.67, 2.69, 4.00, 2.88}
  478.  
  479.  
  480.  
  481.    Procedure PUSHBUTTON1_OnClick
  482.    local notesForm
  483.  
  484.    notesForm = new CountryNotesForm()
  485.    notesForm.mdi = .F.
  486.    notesForm.ReadModal()
  487.  
  488.    notesForm.Release()
  489.  
  490.  
  491. ENDCLASS
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.